题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。 public class Number {int number;State current;int count;int[] charInNumber;public Number() {current = new OneState();}public int getNumber() {return number;}public void setNumber(int number) {this.number = number;}public State getCurrent() {return current;}public void setCurrent(State current) {this.current = current;}public void getCount(){current.getCount(this);}//求每位数字public void getChars(){charInNumber = new int[count];int temp = number;if(count >= 2){for(int i = 0; i < count; i ++){charInNumber[i] = temp / (getValue(count - 1 - i));temp = temp % (getValue(count - 1 - i));if(temp < 10){charInNumber[i + 1] = temp;break;}}}else{charInNumber[0] = temp;}}//求十的阶乘,感觉好蠢的方法public int getValue(int count){int value = 1;for(int i = 0; i < count; i ++){value = value * 10;}return value;}}public abstract class State {public abstract void getCount(Number number);}public class OneState extends State {@Overridepublic void getCount(Number number) {if(number.getNumber() < 10 ){number.count = 1;number.getChars();}else{number.setCurrent(new TwoState());number.getCount();}}}public class TwoState extends State {@Overridepublic void getCount(Number number) {if(number.getNumber() < 100){number.count = 2;number.getChars();}else{number.setCurrent(new ThreeState());number.getCount();}}}public class ThreeState extends State {@Overridepublic void getCount(Number number) {if(number.getNumber() < 1000){number.count = 3;number.getChars();}else{number.setCurrent(new FourState());number.getCount();}}}public class FourState extends State {@Overridepublic void getCount(Number number) {if(number.getNumber() < 10000){number.count = 4;number.getChars();}else{number.setCurrent(new FiveState());number.getCount();}}}public class FiveState extends State {@Overridepublic void getCount(Number number) {if(number.getNumber() < 100000){number.count = 5;number.getChars();}}}public class Practise24 {private void getResult(){System.out.println("请输入一个不多于5位的正整数");Scanner scan = new Scanner(System.in);int input = scan.nextInt();Number number = new Number();number.setNumber(input);number.getCount();System.out.println(number.getNumber() + " 是 " + number.count +"位数");System.out.println();for(int i = number.count - 1; i >= 0; i --){System.out.print(" "+number.charInNumber[i]);}}public static void main(String[] args) {(new Practise24()).getResult();}}
java经典问题——求正整数的位数
Java编程:用两种方法求输入正整数的位数。
java经典算法_023给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
java 输入一个正整数求各个位数这和
java经典问题——求年纪
Tyvj 水题begin 求一个正整数位数的常用方法
求正整数的位数,依次输出,逆序打印
1006求正整数的位数及各位数字和
一个正整数的位数
java求整数的位数
java中如何获取一个正整数的位数?
求一组正整数的最小公倍数问题
java经典问题——求前20项之和
java经典问题——递归求阶乘
java经典问题——求前20项阶乘的和
SDUT 3503 有两个正整数,求N!的K进制的位数
NYOJ 90 —— 求正整数n划分为若干个正整数的划分个数
【程序24】TestNumber.java 题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
android 用gson解析json的时候报空指针
站长的悲剧
新征程
java经典问题——求年纪
centos_5.4 安装中文支持
java经典问题——求正整数的位数
Linux下使用daemon函数编写后台程序
Oracle数据库权限管理学习笔记
python使用opengl绘制竹叶的十字型
Session会在浏览器关闭后消失吗???
学习方法
POJ 1260 Pearls
2012.12.4(mysql事务处理)
Ant__helloword
|